package router

import (
	"gateway/basic/config"
	"gateway/handler/api"
	"gateway/middleware"
	"gateway/websocket"
	"github.com/gin-gonic/gin"
)

func User(v1 *gin.RouterGroup) {

	user := v1.Group("/user")
	{
		user.Use(middleware.JWTAuth(config.JWTKEY))
		user.POST("/send_sms", api.SendSms)
		user.GET("/userDetail", api.UserDetail)         // 用户详情
		user.POST("/realUser", api.RealUser)            // 实名认证
		user.GET("/interests", api.ListInterests)       // 兴趣列表
		user.POST("/interests", api.SetUserInterests)   // 设置兴趣（最多10个）
		user.GET("/my/interests", api.GetUserInterests) // 获取我的兴趣
		user.POST("/new-game", api.NewGame)             // 新建游戏
		user.POST("/guess", api.Guess)                  // 猜测

		// 滑动匹配相关路由
		user.GET("/swipe/candidates", api.GetSwipeCandidates) // 获取滑动候选用户
		user.GET("/matches", api.GetMatchList)                // 获取匹配列表
		user.POST("/unmatch", api.Unmatch)                    // 解除匹配
		user.POST("/swipeAction", api.SwipeAction)            // 执行滑动动作

		// LBS位置相关路由
		user.POST("/location/update", api.UpdateLocation) // 更新用户位置
		user.GET("/nearby", api.GetNearbyUsers)           // 获取附近的人

		// WebSocket实时通知
		user.GET("/ws", websocket.WsHandler.ConnectWebSocket) // WebSocket连接（即时通信及通知推送）
		/*
			// 聊天相关路由
			user.POST("/chat/send", api.SendChatMessage)  // 发送聊天消息（保存+ws通知）
			user.GET("/chat/history", api.GetChatHistory) // 获取聊天历史
			user.POST("/chat/read", api.MarkChatAsRead)   // 标记消息已读
			user.GET("/chat/unread", api.GetUnreadCount)  // 获取未读消息统计
		*/
		// 灵魂匹配相关路由
		user.GET("/soul/categories", api.GetSoulQuestionCategories)    // 获取灵魂测试题目分类
		user.GET("/soul/questions", api.GetSoulQuestions)              // 获取灵魂测试题目
		user.POST("/soul/answer", api.SubmitSoulAnswer)                // 提交灵魂测试答案
		user.POST("/soul/complete", api.CompleteSoulTest)              // 完成灵魂测试
		user.GET("/soul/result", api.GetSoulTestResult)                // 获取灵魂测试结果
		user.GET("/soul/match/candidates", api.GetSoulMatchCandidates) // 获取灵魂匹配候选用户
		user.GET("/soul/matches", api.GetSoulMatches)                  // 获取灵魂匹配列表
	}
}
